/*
 * jlb
 */
package com.jlb.basic.dao;

import com.jlb.basic.entity.BasicArea;
import com.jlb.core.base.BaseDAO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 行政区域
 *
 * @author jlb
 */
@Mapper
@Repository
public interface BasicAreaDAO extends BaseDAO<BasicArea, Long> {

    //根据areaCode获得区域对象
    List<BasicArea> queryAll();//xml使用的query

    //根据areaCode获得区域对象
    BasicArea loadAreaCode(@Param("areaCode") String areaCode);

    //省
    BasicArea loadProvince(@Param("province") String province, @Param("level") String level);

    //市
    List<BasicArea> loadCity(@Param("city") String city, @Param("level") String level);

    //区
    List<BasicArea> loadArea(@Param("areaCode") String areaCode, @Param("level") String level);

    List<BasicArea> loadBasicAreaAndChildren(String province, int level);

    //获取所有省份
    List<BasicArea> listProvoice();

    //获取市信息;
    List<BasicArea> listCitysByCode(@Param("areaCode") String areaCode);

    //获取市信息;
    List<BasicArea> listCountyByCode(@Param("areaCode") String areaCode);

    //获取市信息;
    List<BasicArea> listTownsByCode(@Param("areaCode") String areaCode);

    /**
     * 根据区域编号修改区域信息（只能修改地区名称）
     */
    void updateNameByCode(Map<String, Object> map);

    /**
     * 根据区域编码删除区域
     *
     * @param areaCode 区域编码
     */
    void deleteAreaByCode(@Param("areaCode") String areaCode);

    /**
     * 根据区域编码删除区域
     */
    void addArea(BasicArea basicArea);

    /**
     * 根据区域编号和名称判断是否存在
     *
     * @param map
     * @return
     */
    List<BasicArea> isExistArea(Map<String, Object> map);

    /**
     * 根据区域编码或是名称进行多条件查询
     *
     * @param map
     * @return
     */
    List<BasicArea> loadByParam(Map<String, Object> map);


}
